/**
 * 版本号自动更新脚本
 * 在打包前更新package.json中的版本号
 * 支持手动输入版本号，如不输入则自动递增补丁版本号
 */
const fs = require('fs');
const path = require('path');
const readline = require('readline');

// 创建readline接口
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

// 获取package.json路径
const packageJsonPath = path.join(__dirname, '..', 'package.json');

// 读取package.json
const packageJson = require(packageJsonPath);
const currentVersion = packageJson.version;

// 解析版本号
const versionParts = currentVersion.split('.');
const major = parseInt(versionParts[0], 10);
const minor = parseInt(versionParts[1], 10);
const patch = parseInt(versionParts[2], 10);

// 默认的新版本号（补丁版本号+1）
const defaultNewVersion = `${major}.${minor}.${patch + 1}`;

// 提示用户输入版本号
console.log(`当前版本号: ${currentVersion}`);
console.log(`默认新版本号: ${defaultNewVersion} (补丁版本号+1)`);

rl.question(`请输入新版本号 (直接回车使用默认值 ${defaultNewVersion}): `, (inputVersion) => {
  // 如果用户没有输入，使用默认版本号
  const newVersion = inputVersion.trim() || defaultNewVersion;
  
  // 验证版本号格式
  if (!/^\d+\.\d+\.\d+$/.test(newVersion)) {
    console.error('错误: 版本号格式不正确，应为 x.y.z 格式');
    rl.close();
    process.exit(1);
  }
  
  // 更新package.json中的版本号
  packageJson.version = newVersion;
  fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf8');
  
  console.log(`版本号已从 ${currentVersion} 更新至 ${newVersion}`);
  rl.close();
});